博客
关于我
torch笔记六 | 搭建一个简单的与运算神经网络
阅读量:328 次
发布时间:2019-03-04

本文共 1621 字,大约阅读时间需要 5 分钟。

与运算神经网络的搭建与训练

任务目标

搭建一个简单的与运算(AND)神经网络,使用PyTorch框架进行训练,熟悉神经网络的搭建流程。

设计步骤

1. 导入必要的库

在Python环境中安装并导入PyTorch和NumPy库。NumPy用于数据生成,PyTorch用于神经网络搭建和训练。

import torchimport numpy as npfrom torch import nn

2. 构建输入集和理想输出集

使用NumPy生成四个训练样本,分别是(0,0)、(0,1)、(1,0)、(1,1)。对应的理想输出为0、0、0、1。将这些数据转换为PyTorch的Tensor变量进行训练。

# 生成输入数据矩阵x = np.mat('0 0; 0 1; 1 0; 1 1')x = torch.tensor(x).float()  # 将输入转换为浮点型Tensor# 生成理想输出y = np.mat('0; 0; 0; 1')y = torch.tensor(y).float()  # 将输出转换为浮点型Tensor

3. 搭建神经网络

使用PyTorch的nn.Sequential构建一个简单的网络,包含输入层、激活函数层和输出层。

# 定义网络结构class MyNet(nn.Module):    def __init__(self):        super(MyNet, self).__init__()        # 输入层:2个输入节点,8个隐藏节点        self.fc1 = nn.Linear(2, 8)        # 激活函数层:ReLU        self.relu = nn.ReLU()        # 隐藏层2:8个输入节点,1个输出节点        self.fc2 = nn.Linear(8, 1)        # 输出层:Sigmoid激活函数        self.sigmoid = nn.Sigmoid()    def forward(self, x):        # 前向传播        x = self.fc1(x)        x = self.relu(x)        x = self.fc2(x)        x = self.sigmoid(x)        return x# 初始化网络myNet = MyNet()

4. 设置优化器

使用随机梯度下降(SGD)优化器,设置学习率为0.05。

# 定义优化器optimizer = torch.optim.SGD(myNet.parameters(), lr=0.05)

5. 设置损失函数

使用均方误差(MSE)作为损失函数,用于衡量实际输出与理想输出的差异。

# 定义损失函数loss_func = nn.MSELoss()

6. 训练网络

运行3000次训练循环,逐步优化网络参数。

# 训练循环for epoch in range(3000):    # 前向传播    outputs = myNet(x)    # 计算损失    loss = loss_func(outputs, y)    # 清除梯度    optimizer.zero_grad()    # 反向传播    loss.backward()    # 优化参数    optimizer.step()

7. 测试结果

输出训练后的输入数据和实际输出结果。

# 显示训练结果print("输入数据:")print(x)print("\n输出结果:")print(myNet(x).data)

运行结果

通过训练,网络能够正确识别与运算结果。输入为(0,0)时输出为0,输入为(0,1)时输出为0,输入为(1,0)时输出为0,输入为(1,1)时输出为1,表明网络训练效果良好。

转载地址:http://yznq.baihongyu.com/

你可能感兴趣的文章
pipy国内镜像的网址
查看>>
quiver绘制python语言
查看>>
pip下载缓慢
查看>>
PIP使用SSH从BitBucket安装自定义软件包,无需输入SSH密码
查看>>
pip命令提示unknow or unsupported command install解决方法
查看>>
pip在安装模块时提示Read timed out
查看>>
pip更换源
查看>>
SpringBoot之Banner源码深度分解
查看>>
Pix2Pix如何工作?
查看>>
QuickBI助你成为分析师——搞定数据源
查看>>
pkl来存储python字典
查看>>
quick sort | 快速排序 C++ 实现
查看>>
pkpmbs 建设工程质量监督系统 Ajax_operaFile.aspx 文件读取漏洞复现
查看>>
pkpmbs 建设工程质量监督系统 文件上传漏洞复现
查看>>
pku 2400 Supervisor, Supervisee KM求最小权匹配+DFS回溯解集
查看>>